package com.harunasan.carrental.common.api;

/**
 * 枚举了一些常用API操作码
 *
 * @author 李戎
 */
public enum ResultCode implements IErrorCode {
    //操作成功!
    SUCCESS(200, "操作成功!"),
    //操作失败!
    FAILED(500, "操作失败!"),
    //参数检验失败
    VALIDATE_FAILED(400, "参数检验失败"),
    //暂未登录或token已经过期
    UNAUTHORIZED(401, "暂未登录或token已经过期"),
    //没有相关权限
    FORBIDDEN(403, "没有相关权限"),
    //储罐模块未授权,请先购买进行授权!
    TANK_FORBIDDEN(403, "储罐模块未授权,请先购买进行授权!"),
    //登陆失败!用户已被禁用!
    USER_LOGIN_NOT_ENABLE(40001, "登陆失败!用户已被禁用!"),
    //创建失败!部门名称已存在!
    DEPARTMENT_POSTION_CREATE_NAME_REPEAT(40101, "创建失败!部门名称已存在!"),
    //创建失败!角色不存在!
    DEPARTMENT_POSTION_CREATE_ROLE_NONE(40102, "创建失败!角色不存在!"),
    //创建失败!角色名称已存在!
    DEPARTMENT_POSTION_CREATE_ROLE_REPEAT(40103, "创建失败!角色名称已存在!"),
    //修改失败!部门名称已存在!
    DEPARTMENT_POSTION_UPDATE_NAME_REPEAT(40104, "修改失败!部门名称已存在!"),
    //修改失败!部门不存在!
    DEPARTMENT_POSTION_UPDATE_ID_NONE(40105, "修改失败!部门不存在!"),
    //删除失败!部门不存在!
    DEPARTMENT_POSTION_DELETE_ID_NONE(40106, "删除失败!部门不存在!"),
    //删除失败!存在子部门不允许删除!
    DEPARTMENT_POSTION_DELETE_HAVE_CHILD(40107, "删除失败!存在子部门不允许删除!"),
    //移动失败!部门不存在!
    DEPARTMENT_POSTION_MOVE_ERROR(40108, "移动失败!部门不存在!"),
    //移动失败!子部门已存在相同名字!
    DEPARTMENT_POSTION_MOVE_NAME_REPEAT(40109, "移动失败!子部门已存在相同名字!"),
    //添加岗位失败!部门不存在!
    DEPARTMENT_POSTION_CREATE_POSTION_NONE(40110, "添加岗位失败!部门不存在!"),
    //添加岗位失败!岗位已存在不能重复添加!
    DEPARTMENT_POSTION_CREATE_POSTION_REPEAT(40111, "添加岗位失败!岗位已存在不能重复添加!"),
    //添加岗位失败!岗位不能为空!
    DEPARTMENT_POSTION_CREATE_POSTION_NULL(40112, "添加岗位失败!岗位不能为空!"),
    //删除岗位失败!部门不存在!
    DEPARTMENT_POSTION_DELETE_POSTION_DEPARTMENT_NONE(40113, "删除岗位失败!部门不存在!"),
    //删除岗位失败!岗位不存在!
    DEPARTMENT_POSTION_DELETE_POSTION_NONE(40114, "删除岗位失败!岗位不存在!"),
    //删除岗位失败!岗位不能为空!
    DEPARTMENT_POSTION_DELETE_POSTION_NULL(40115, "删除岗位失败!岗位不能为空!"),
    //创建失败!角色名称已存在!
    ROLE_CREATE_NAME_REPEAT(40201, "创建失败!角色名称已存在!"),
    //修改失败!角色名称已存在!
    ROLE_UPDATE_NAME_REPEAT(40202, "修改失败!角色名称已存在!"),
    //修改失败!角色不存在!
    ROLE_UPDATE_ID_NONE(40203, "修改失败!角色不存在!"),
    //删除失败!角色不存在!
    ROLE_DELETE_ID_NONE(40204, "删除失败!角色不存在!"),
    //创建失败!岗位名称已存在!
    POSTION_CREATE_NAME_REPEAT(40301, "创建失败!岗位名称已存在!"),
    //关联角色失败!角色不存在!
    POSTION_RELATED_ROLE_NONE(40302, "关联角色失败!角色不存在!"),
    //关联角色失败!角色已存在!
    POSTION_RELATED_ROLE_REPEAT(40303, "关联角色失败!角色已存在!"),
    //修改失败!岗位名称已存在!
    POSTION_UPDATE_NAME_REPEAT(40304, "修改失败!岗位名称已存在!"),
    //修改失败!岗位不存在!
    POSTION_UPDATE_ID_NONE(40305, "修改失败!岗位不存在!"),
    //删除失败!岗位不存在!
    POSTION_DELETE_ID_NONE(40306, "删除失败!岗位不存在!"),
    //删除失败!岗位不能为空!
    POSTION_DELETE_ID_NULL(40307, "删除失败!岗位不能为空!"),
    //删除失败!员工不存在!
    USER_DELETE_ID_NONE(40401, "删除失败!员工不存在!"),
    //批量删除失败!员工不存在!
    USER_BATCH_DELETE_ID_NONE(40402, "批量删除失败!员工不存在!"),
    //批量删除失败!未选择员工!
    USER_BATCH_DELETE_ID_NULL(40403, "批量删除失败!未选择员工!"),
    //启动失败!员工不存在!
    USER_ENABLE_ID_NONE(40404, "启动失败!员工不存在!"),
    //禁用失败!员工不存在!
    USER_DISABLE_ID_NONE(40405, "禁用失败!员工不存在!"),
    //修改失败!员工不存在!
    USER_PERSONAL_INFO_UPDATE_ID_NONE(40406, "修改失败!员工不存在!"),
    //修改失败!员工账号已存在!
    USER_PERSONAL_INFO_UPDATE_UNIQUE(40407, "修改失败!员工账号已存在!"),
    //修改密码失败!员工不存在!
    USER_PERSONAL_INFO_PASSWORD_UPDATE_ID_NONE(40408, "修改密码失败!员工不存在!"),
    //修改密码失败!原密码不正确!
    USER_PERSONAL_INFO_PASSWORD_UPDATE_PASSWORD_NOT_MATCH(40409, "修改密码失败!原密码不正确!"),
    //创建员工失败!部门不存在!
    DEPARTMENT_POSTION_USER_CREATE_DEPARTMENT_NONE(40501, "创建员工失败!部门不存在!"),
    //创建员工失败!员工已存在!
    DEPARTMENT_POSTION_USER_CREATE_REPEAT(40502, "创建员工失败!员工已存在!"),
    //创建员工失败!岗位下已存在该员工!
    DEPARTMENT_POSTION_USER_CREATE_POSTION_REPEAT(40503, "创建员工失败!岗位下已存在该员工!"),
    //批量添加员工失败!岗位下已存在该员工!
    DEPARTMENT_POSTION_USER_BATCH_CREATE_POSTION_REPEAT(40504, "批量添加员工失败!岗位下已存在该员工!"),
    //修改员工失败!员工不存在!
    DEPARTMENT_POSTION_USER_NONE(40505, "修改员工失败!员工不存在!"),
    //修改员工失败!员工已存在!
    DEPARTMENT_POSTION_USER_REPEAT(40506, "修改员工失败!员工已存在!"),
    //上传附件失败!
    UPLOAD_FILE_ERROR(40801, "上传附件失败!"),
    //创建附件目录失败!
    UPLOAD_FILE_CREATE_DIR_ERROR(40802, "创建附件目录失败!"),

    //-2xx 参数校验
    BORROW_AMOUNT_NULL_ERROR(-201, "借款额度不能为空"),
    MOBILE_NULL_ERROR(-202, "手机号码不能为空"),
    MOBILE_ERROR(-203, "手机号码不正确"),
    PASSWORD_NULL_ERROR(204, "密码不能为空"),
    CODE_NULL_ERROR(205, "验证码不能为空"),
    CODE_ERROR(206, "验证码错误"),
    MOBILE_EXIST_ERROR(207, "手机号已被注册"),
    LOGIN_MOBILE_ERROR(208, "用户不存在"),
    LOGIN_PASSWORD_ERROR(209, "密码错误"),
    LOGIN_LOKED_ERROR(210, "用户被锁定"),
    LOGIN_AUTH_ERROR(-211, "未登录"),

    ALIYUN_RESPONSE_ERROR(-501, "阿里云短信服务响应失败"),
    ALIYUN_SMS_LIMIT_CONTROL_ERROR(-502, "短信发送过于频繁"),//业务限流
    ALIYUN_SMS_ERROR(-503, "短信发送失败"),//其他失败


    ;
    private final long code;
    private final String message;

    ResultCode(long code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public String getCode() {
        /*
         * 本地启动时如不使用转换,会直接输出long类型,
         * 由于前端使用强类型判断,所以这里使用转换,
         * 暂时未定位到问题原因,有可能是maven启动顺序问题,直接启动jar包不影响
         *
         * @author 梁毅
         */
        return String.valueOf(code);
    }

    @Override
    public String getMessage() {
        return message;
    }
}
